#include "frmathang.h"
#include "ui_frmathang.h"
#include "qmessagebox.h"
#include "QModelIndex"
#include <QAbstractItemModel>
#include <QItemSelection>
#include <QItemSelectionModel>
#include "ketnoidb.h"

frMatHang::frMatHang(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::frMatHang)
{
    ui->setupUi(this);
    ui->txtMaHang->setEnabled(false);
    loadMatHang();
    connect(ui->btnThem,SIGNAL(clicked()),this,SLOT(themMH()));
    connect(ui->btnSua,SIGNAL(clicked()),this,SLOT(suaMH()));
    connect(ui->btnXoa,SIGNAL(clicked()),this,SLOT(XoaMH()));
    connect(ui->tabMatHang->selectionModel(),SIGNAL(selectionChanged(const QItemSelection &,const QItemSelection &)),this,SLOT(select(const QItemSelection &)));
}

frMatHang::~frMatHang()
{
    delete ui;
}

void frMatHang::loadMatHang()
{
    QSqlQueryModel *model = thaotac.truyVanDuLieu("SELECT * FROM mathang");
    model->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("Mã MH"));
    model->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Tên hàng"));
    model->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Số lượng"));
    ui->tabMatHang->setModel(model);
    ui->tabMatHang->show();
    ui->tabMatHang->hideColumn(0);
    connect(ui->tabMatHang->selectionModel(),SIGNAL(selectionChanged(const QItemSelection &,const QItemSelection &)),this,SLOT(select(const QItemSelection &)));
}

void frMatHang::select(QItemSelection)
{
    QAbstractItemModel *item=ui->tabMatHang->model();
    QModelIndex indexItem=ui->tabMatHang->currentIndex();
    int row=indexItem.row();
    ui->txtMaHang->setText(item->data(item->index(row,0)).toString());
    ui->txtTenHang->setText(item->data(item->index(row,1)).toString());
    ui->txtSoLuog->setText(item->data(item->index(row,2)).toString());
}

void frMatHang::themMH()
{
    if(ui->txtTenHang->text()==""||ui->txtMaHang->text()=="")
    {
        QMessageBox::critical(this, QString::fromUtf8("Lỗi nhập đữ liệu "), QString::fromUtf8("Nhập tên mặt hàng"));
        return;
    }
    bool ok;
    ui->txtSoLuog->text().toInt(&ok);
    if(!ok)
    {
            QMessageBox::critical(this, QString::fromUtf8("Lỗi nhập đữ liệu "), QString::fromUtf8("Nhập số lượng là số"));
            return;
    }
    if(ui->txtSoLuog->text().toInt()<0)
    {
        QMessageBox::critical(this, QString::fromUtf8("Lỗi nhập đữ liệu "), QString::fromUtf8("Nhập số lượng là số dương"));
        return;
    }
    QString str="INSERT INTO mathang(TenMatHang,SoLuongTon) values ('" + ui->txtTenHang->text() + "'," + ui->txtSoLuog->text() +") ";
    //QMessageBox::information(this,"tb",str);
    thaotac.capNhatDuLieu(str);

    QMessageBox::information(this,QString::fromUtf8("Thông Báo"),QString::fromUtf8("Thêm phiếu xuất thành công"));
    loadMatHang();
}

void frMatHang::suaMH()
{
    if(ui->txtTenHang->text()=="")
    {
        QMessageBox::critical(this, QString::fromUtf8("Lỗi nhập đữ liệu "), QString::fromUtf8("Nhập tên mặt hàng"));
        return;
    }
    bool ok;
    ui->txtSoLuog->text().toInt(&ok);
    if(!ok)
    {
            QMessageBox::critical(this, QString::fromUtf8("Lỗi nhập đữ liệu "), QString::fromUtf8("Nhập số lượng là số"));
            return;
    }
    if(ui->txtSoLuog->text().toInt()<0)
    {
        QMessageBox::critical(this, QString::fromUtf8("Lỗi nhập đữ liệu "), QString::fromUtf8("Nhập số lượng là số dương"));
        return;
    }
    QString str = "UPDATE mathang SET tenmathang='"+ui->txtTenHang->text()+"',soluongton="+ui->txtSoLuog->text()+" WHERE MaMatHang="+ui->txtMaHang->text()+"";
    QMessageBox::information(this,"tb",str);
    query = thaotac.duyetDuLieu(str);
    loadMatHang();
}

void frMatHang::XoaMH()
{
    if(ui->txtMaHang->text()=="")
    {
        QMessageBox::critical(this, QString::fromUtf8("Lỗi "), QString::fromUtf8("Chọn một mặt hàng"));
        return;
    }
    if(QMessageBox::critical(this, QString::fromUtf8("Xóa !"),QString::fromUtf8("Có chắc chắn muốn xóa dữ liệu này ?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
    {
         QString kt=kiemtra(ui->txtMaHang->text());
         if(kt!="")
         {
             if(QMessageBox::critical(this, QString::fromUtf8("Cảnh báo !"),QString::fromUtf8("Mặt hàng này đã được nhập dữ liệu, bạn có chắc muốn xóa?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
             {
                 QString st="DELETE FROM chitietphieuxuat WHERE mamathang=" + ui->txtMaHang->text() + " ";
                 thaotac.capNhatDuLieu(st);

                 QString str="DELETE FROM mathang WHERE mamathang=" + ui->txtMaHang->text() + " ";
                 thaotac.capNhatDuLieu(str);
             }
             else
                 {
                 return;
             }
         }
         else
         {
             QString str="DELETE FROM mathang WHERE mamathang=" + ui->txtMaHang->text() + " ";
             thaotac.capNhatDuLieu(str);
         }
    }
    loadMatHang();
}

void frMatHang::on_btnThoat_clicked()
{
    if(QMessageBox::information(this,QString::fromUtf8("Thông báo!"),QString::fromUtf8("Bạn muốn thoát khỏi chương trình"),QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes)
        qApp->quit();
}

QString frMatHang::kiemtra(QString makt)
{
    QString strsql="SELECT machitietphieu FROM chitietphieuxuat where mamathang="+makt;
    QSqlQuery vl= thaotac.duyetDuLieu(strsql);
    vl.first();
    return vl.value(0).toString();
}




